package com.yunqiao.service.api.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单信息
 *
 * @author Crocutax
 * @email wangxw725@163.com
 * @date 2019-03-03 21:58:45
 */
@TableName("tb_order")
@Data
@ApiModel(value = "订单信息对象")
public class OrderEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    @TableId
    @ApiModelProperty(value = "", hidden = false)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     *1:支付宝支付， 2：微信支付 3：余额支付  4:微信小程序支付
     */
    @ApiModelProperty(value = "1:支付宝支付， 2：微信支付 3：余额支付")
    private Integer type;

    /**
     * 货主ID
     */
    @ApiModelProperty(value = "货主ID")
    private Long userId;
    /**
     * 是否准点到 1:准点， 2：不准点
     */
    @ApiModelProperty(value = "是否准点到 1:准点， 2：不准点")
    private Integer fiducialPoint;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderNumber;
    /**
     * 司机ID
     */
    @ApiModelProperty(value = "司机ID")
    private Long driverId;
    /**
     * 100待接单-200待取货-300运输中-400用户点击已送达-500：司机点击已送达 600已完成-700用户已评价-800司机已评价-900双方都评价了- 1000已关闭
     */
    @ApiModelProperty(value = "100待接单-200待取货-300运输中-400用户点击已送达-500：司机点击已送达 600已完成-700用户已评价-800司机已评价-900双方都评价了- 1000已关闭")
    private Integer status;
    /**
     * 原价格
     */
    @ApiModelProperty(value = "原价格")
    private BigDecimal originalPrice;
    /**
     * 价格
     */
    @ApiModelProperty(value = "价格")
    private BigDecimal price;
    /**
     * 生效时间
     */
    @ApiModelProperty(value = "生效时间")
    private Date effectiveTime;
    /**
     * 生效时间字符串 如：12:30
     */
    @ApiModelProperty(value = "生效时间字符串 如：12:30 ")
    @TableField(exist = false)
    private String effectiveTimeStr;
    /**
     * 车型ID
     */
    @ApiModelProperty(value = "车型ID")
    private Integer carTypeId;
    /**
     * 1没有 2有
     */
    @ApiModelProperty(value = "是否有人跟车:1没有 2有", allowableValues = "1,2")
    private Integer withPeople;
    /**
     * 出发:省
     */
    @ApiModelProperty(value = "出发:省")
    private String startProvince;
    /**
     * 出发:市
     */
    @ApiModelProperty(value = "出发:市")
    private String startCity;
    /**
     * 出发:区
     */
    @ApiModelProperty(value = "出发:区")
    private String startArea;
    /**
     * 出发:描述
     */
    @ApiModelProperty(value = "出发:描述")
    private String startContent;
    /**
     * 出发:详细地址
     */
    @ApiModelProperty(value = "出发:详细地址")
    private String startDetail;
    /**
     * 出发:发货人
     */
    @ApiModelProperty(value = "出发:发货人")
    private String startName;
    /**
     * 出发:发货人手机
     */
    @ApiModelProperty(value = "出发:发货人手机")
    private String startPhone;
    /**
     * 目的:省
     */
    @ApiModelProperty(value = "目的:省")
    private String endProvince;
    /**
     * 目的:市
     */
    @ApiModelProperty(value = "目的:市")
    private String endCity;
    /**
     * 目的:区
     */
    @ApiModelProperty(value = "目的:区")
    private String endArea;
    /**
     * 目的:描述
     */
    @ApiModelProperty(value = "目的:区")
    private String endContent;
    /**
     * 目的:详细地址
     */
    @ApiModelProperty(value = "目的:详细地址")
    private String endDetail;
    /**
     * 目的:收货人
     */
    @ApiModelProperty(value = "目的:收货人")
    private String endName;
    /**
     * 目的:收货人手机
     */
    @ApiModelProperty(value = "目的:收货人手机")
    private String endPhone;
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * 投诉ID
     */
    @ApiModelProperty(value = "投诉ID")
    private Integer complaintId;
    /**
     * 红包ID
     */
    @ApiModelProperty(value = "红包id")
    private Long redId;
    /**
     * 预计司机取货时间  单位 秒
     */
    @ApiModelProperty(value = "预计司机取货时间  单位 秒")
    private Long goodsTime;

    /**
     * 1:司机取消，2：用户取消
     */
    @ApiModelProperty(value = "1:司机取消，2：用户取消")
    private Integer cancelPeople;

    /**
     * 取消原因
     */
    @ApiModelProperty(value = "取消原因")
    private String cancelReason;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", hidden = false)
    private Date createTime;
    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间", hidden = true)
    private Date updateTime;
    /**
     * 软删除
     */
    @TableLogic
    @JsonIgnore
    @ApiModelProperty(value = "软删除", hidden = true)
    private Integer deleted;

    @ApiModelProperty(value = "货物起点维度", hidden = false)
    private String lat;
    @ApiModelProperty(value = "货物起点经度", hidden = false)
    private String lon;

    private BigDecimal driverPrice;

    @ApiModelProperty(value = "货物终点维度", hidden = false)
    private String latEnd;
    @ApiModelProperty(value = "货物终点经度", hidden = false)
    private String lonEnd;

    //代理商区域ID
    private Long deptId;
    //代理商账户ID
    private Long agentId;
}
